#include <my_head.h>

void sig_func(int signum){
    if(SIGCHLD == signum){
        wait(NULL);
        printf("回收子进程资源成功\n");
        raise(SIGKILL); // 自杀  
    }
}

int main(int argc, const char *argv[]){
    // 捕捉子进程退出的信号
    signal(SIGCHLD, sig_func);
    pid_t pid = 0;
    if(-1 == (pid = fork())){
        ERR_LOG("fork error");
    }else if(0 < pid){ // 父
        while(1){
            printf("我是父进程 %d\n", getpid());
            sleep(1);
        }
    }else if(0 == pid){ // 子
        printf("我是子进程 [%d] 5 秒后退出\n", getpid());
        sleep(5);
        printf("我是子进程 [%d] 退出\n", getpid());
    }
    return 0;
}